在 Laravel 中,下面檔案與 Database 有關,是我覺得新手在練習時可以一起連著看的,建議在看官方文件的同時可以參考此篇概念,搭配文件一起閱讀:
.env 檔案會撰寫與 Database 設定相關資料,如:資料庫名稱、使用者名稱、使用者密碼等
Laravel 使用 migration 記錄對資料表的操作,而不是直接紀錄最終結果,有幾個重要的原因:
我自己的翻譯:
Seeder = 種子資料
Factory = 生成資料的工廠
在 Laravel 專案開發階段時,由於 table 結構、資料欄位可能會因為考量到不同需求產生變動,Seeder 和 Factory 可幫助開發人員不用每次重新手動填寫數據進資料表,可以快速產生並注入相同或隨機資料。
我自己用下來很適合用在有關聯性的分類上,例如:自行車品牌與車種、購物的分類(美容、食品、生活用品),這類型由於更細的資料(如:產品)需要分屬於這些類別的資料。
Model 是 Laravel 中的一個 Class,代表了數據庫表格的抽象。每個 Model 通常對應到數據庫中的一個表格,並提供了與該表格的映射和操作方法。Model 允許你以物件導向的方式處理數據,並使數據庫記錄變成可操作的物件。
每個 Model 通常對應到一個表格,並提供了與該表格的映射和操作方法。
例如: Product Model 對應到 products table
Query Builder 是 Laravel 提供的工具,用於生成和執行 SQL 查詢。它允許你以方法鏈式的方式建立和自訂查詢,而無需直接使用 SQL 語句。Query Builder 提供了一個方便且抽象的方法來與數據庫進行互動。
例如:使用 Query Builder 查詢所有價格低於 $500 的產品
$products = DB::table('products')
->where('price', '<', 500)
->get();
Eloquent ORM 是 Laravel 中的 ORM 工具,它建立在 Query Builder 之上,並提供了更高級的、物件導向的方式來處理數據庫操作。Eloquent 將 Model 與數據表關聯,並提供了高級的數據庫操作方法。
例如:使用 Eloquent 查詢所有名稱包含 "Laptop" 的產品
$products = Product::where('name', 'like', '%Laptop%')->get();
很多文章給的範例:
// Eloquent ORM,用 Product model 直接加上條件語句並取得資料
Product::where('price', '<', 100)->get();
// Query Builder,直接對 products table 進行條件搜尋與取得資料
DB::table('products', '<', 100)->get();
我自己很常碰到的問題,是如何分辨這兩個東西?明明是使用 Eloquent ORM ,用 dd()
查看結果時卻顯示 query builder。
原來在 Eloquent ORM 語句未結束前,實際上也是使用 Query Builder,因此才會有這樣子的結果。
// 只下了 where 條件,語句未結束
dd(Group::where('status', Group::STATUS_OPEN));
讓 Eloquent ORM 語句完整後,結果變成 Collection 物件
// 加上 get() 讓語句完整
dd(Group::where('status', Group::STATUS_OPEN)->get());
寫到這篇有點迷失方向,又變回手把手的教學紀錄……
好在睡了一個午覺後重新冷靜下來,重新想了一下我想在鐵人賽的價值,才又產出這篇。
沒什麼的啦~四千多字整個打掉重來而已嘛(苦笑)
雖然我的文章不會教你寫 code,也不一定能呈現出我想帶來的價值,但我會繼續努力的💪!